<?php
/**
 * Zhub - A PHP Framework For API Developer
 *
 * This file is part of the Zhub package.
 *
 * (c) YiLong Fan <fantiq@163.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 *
 * @author fanyilong <fantiq@163.com>
 * @copyright 2017 fanyilong. All rights reserved.
 * @package Zhub
 * @date 18-3-7
 */

namespace Zhub\DataBase\Grammar;


abstract class Grammar
{
    protected $sqlComponent = [];

    protected $tableName = null;

    protected $parameters = [];

    public function __construct(string $tableName = null)
    {
        $this->tableName = $tableName;
    }

    public function __toString():string
    {
        return $this->toSQL();
    }

    abstract public function toSQL():string ;

    public function initialize()
    {
        $this->tableName = null;

        $this->parameters = [];
    }

    public function __clone()
    {
        $this->initialize();
    }

    protected function bindValue(string $key, $value)
    {
        $this->parameters[$key] = $value;
    }

    protected function getBindValue():array
    {
        return $this->parameters;
    }
}
